package com.alcj.common.utils;

import java.io.File;
import java.text.SimpleDateFormat;
import java.util.Date;
import java.util.Properties;
import java.util.Random;
import java.util.ResourceBundle;

import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.web.multipart.MultipartFile;

/**
 * <b>功能：文件工具类</b><br> 
 * <br>
 * <b>完整路径：</b> com.framework.utils.MultipartFileUtil <br> 
 * <b>创建日期：</b> 2016年4月28日 下午1:25:16 <br>
 * @author guokb<br>
 * @version 1.0
 */
public class MultipartFileUtil {

	private static Logger logger = LoggerFactory.getLogger(MultipartFileUtil.class);
	
	/**
	 * <b>功能：上传文件</b>
	 * @Author:chenxh , 2016年4月28日
	 * @param file
	 * @return String
	 **/
	public static String uploadFile(MultipartFile file) {
		try{
			String savePath = CmnUtil.GetPropertyValue("application.properties","web.upload-path");
			//设置文件保存根路径
			File rootDir = new File(savePath);
			//检查根路径是否存在，不存在则创建
			if(!rootDir.exists()){
				rootDir.mkdirs();
			}
			//检查路径是否有写权限，没有则赋权
			if(!rootDir.canWrite()){
				rootDir.setWritable(true);
			}
			//获取当前日期
			Date date = new Date();
			//定义日期格式化类型
			SimpleDateFormat sdf = new SimpleDateFormat("yyyyMMddHHmmssSSS");
			//获取文件名
			String fileName = file.getOriginalFilename();
			//获取文件扩展名
			String extName = fileName.substring(fileName.lastIndexOf("."), fileName.length());
			//生成7位随机数
			String random = String.valueOf(new Random().nextInt(1000000));
			//重新生成文件名
			String newFileName = sdf.format(date) + random + extName;
			//创建文件
			File uploadedFile = new File(savePath, newFileName);
			//发送文件
			file.transferTo(uploadedFile);
			return savePath + "/" + newFileName;
		}catch (Exception e) {
			logger.error("保存文件失败：{}", e.getMessage());
			return "error";
		}
	}

	/**
	 * <b>功能：上传文件</b>
	 * @Author:chenxh , 2016年4月28日
	 * @param file
	 * @return String
	 **/
	public static String uploadFilePath(MultipartFile file,String path) {
		try{
			String savePath = CmnUtil.GetPropertyValue("application.properties",path);
			//设置文件保存根路径
			File rootDir = new File(savePath);
			//检查根路径是否存在，不存在则创建
			if(!rootDir.exists()){
				rootDir.mkdirs();
			}
			//检查路径是否有写权限，没有则赋权
			if(!rootDir.canWrite()){
				rootDir.setWritable(true);
			}
			//获取当前日期
			Date date = new Date();
			//定义日期格式化类型
			SimpleDateFormat sdf = new SimpleDateFormat("yyyyMMddHHmmssSSS");
			//获取文件名
			String fileName = file.getOriginalFilename();
			//获取文件扩展名
			String extName = fileName.substring(fileName.lastIndexOf("."), fileName.length());
			//生成7位随机数
			String random = String.valueOf(new Random().nextInt(1000000));
			//重新生成文件名
			String newFileName = sdf.format(date) + random + extName;
			//创建文件
			File uploadedFile = new File(savePath, newFileName);
			//发送文件
			file.transferTo(uploadedFile);
			return savePath + "/" + newFileName;
		}catch (Exception e) {
			logger.error("保存文件失败：{}", e.getMessage());
			return "error";
		}
	}
	/**
	 * <b>功能：删除文件</b>
	 * @Author:guokb , 2016年4月28日
	 * @param filePath
	 * @return boolean
	 **/
	public static boolean removeFile(String filePath) {
		try{
			//读取配置文件
			ResourceBundle resource = ResourceBundle.getBundle("config");
			//获取当前操作系统
			Properties prop = System.getProperties();
			//获取文件的上传根路径
			String webRootpath = prop.getProperty("weboroc.root");
			//设置文件
			File file = new File(webRootpath +filePath);
			//判断文件是否存在
			if(!file.exists()){
				return true;
			}
			//删除文件
			return file.delete();
		}catch(Exception e){
			logger.error("删除文件失败：{}", e.getMessage());
			logger.error("删除文件失败：{}", e);
			return false;
		}
	}
}
